package com.gitee.faster.webdav.kernel.model;

import jakarta.xml.bind.annotation.*;
import lombok.Getter;
import lombok.Setter;

/**
 * @author hongda.li
 */
@SuppressWarnings("SpellCheckingInspection")
@Setter
@Getter
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
        "allProp",
        "propName",
        "prop"
})
@XmlRootElement(name = "propfind")
public class PropFind {

    /**
     * 查询全部属性值
     */
    @XmlElement(name = "allprop")
    private AllProp allProp;

    /**
     * 查询可用的属性名称
     */
    @XmlElement(name = "propname")
    private PropName propName;

    /**
     * 查询指定属性值
     */
    @XmlElement(name = "prop")
    private Prop prop;

    /**
     * 查询类型
     */
    public enum FindType {
        /**
         * 查询属性值
         */
        SEARCH_VALUE,
        /**
         * 查询属性名
         */
        SEARCH_NAME,
        /**
         * 查询全部
         */
        SEARCH_ALL;

        public static FindType fromProFind(PropFind propfind) {
            if (propfind.getProp() != null) {
                return SEARCH_VALUE;
            } else if (propfind.getPropName() != null) {
                return SEARCH_NAME;
            }
            return SEARCH_ALL;
        }
    }
}
